-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for Json schema to relay-compiler #1683
Conversation
Would you be open to a PR to retrieve the schema from a specified GraphQL endpoint or from the I would also like to tackle |
@asiandrummer I think now is a great time to move forward with this! |
@@ -122,6 +128,9 @@ function getRelayFileWriter(baseDir: string) { | |||
function getSchema(schemaPath: string): GraphQLSchema { | |||
try { | |||
let source = fs.readFileSync(schemaPath, 'utf8'); | |||
if (path.extname(schemaPath) === '.json') { | |||
source = printSchema(buildClientSchema(JSON.parse(source).data)); | |||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems inefficient to build a client schema, print it, and then parse it back to schema again just a few lines later. Lets refactor to avoid this extra conversion, as it could slow down the compiler for apps with larger schemes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@josephsavona could you give me some pointers on how to incorpore those directives in the GraphQLSchema. I am not familiar with the inner working of graphql-js, Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The correct fix to this is a much bigger refactoring. We shouldn't be doing this kind of directive patching in this file in the first place.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this current solution is reasonable until we do that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you want me to leave a todo?
@leebyron What about my proposal to add support for GraphQL endpoint? Thanks
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think the compiler should directly rely on having network access, especially since many private company graphql schema endpoints require authentication which we shouldn't be building here.
However, I think it would be a great addition to have a simple script which allows you to provide a GraphQL endpoint and produce a schema.graphql file which you could later provide to the relay compiler
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://github.com/graphcool/get-graphql-schema does it
it can generate a .json or a .graphql schema from a graphql endpoint
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok. I knew about graphql-config
but not about get-graphql-schema. Thanks @sibelius
@leebyron has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator. |
Fix #1639